{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "df_data = pd.read_csv('train.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 类别变量重新编码\n",
    "# 数值变量，用0填充缺失值\n",
    "sparse_feature_list = [\"Pclass\", \"Sex\", \"Cabin\", \"Embarked\"]\n",
    "dense_feature_list = [\"Age\", \"SibSp\", \"Parch\", \"Fare\"]\n",
    "\n",
    "\n",
    "sparse_feature_reindex_dict = {}\n",
    "for i in sparse_feature_list:\n",
    "    cur_sparse_feature_list = df_data[i].unique()\n",
    "    \n",
    "    sparse_feature_reindex_dict[i] = dict(zip(cur_sparse_feature_list, \\\n",
    "        range(1, len(cur_sparse_feature_list)+1)\n",
    "                                     )\n",
    "                                 )\n",
    "    \n",
    "    df_data[i] = df_data[i].map(sparse_feature_reindex_dict[i])\n",
    "\n",
    "\n",
    "for j in dense_feature_list:\n",
    "    df_data[j] = df_data[j].fillna(0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 分割数据集\n",
    "data = df_data[sparse_feature_list + dense_feature_list]\n",
    "label = df_data[\"Survived\"].values\n",
    "\n",
    "xtrain, xtest, ytrain, ytest = train_test_split(data, label, test_size=0.2, random_state=2020)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [],
   "source": [
    "xtrain_data = {\"Pclass\": np.array(xtrain[\"Pclass\"]), \\\n",
    "              \"Sex\": np.array(xtrain[\"Sex\"]), \\\n",
    "              \"Cabin\": np.array(xtrain[\"Cabin\"]), \\\n",
    "              \"Embarked\": np.array(xtrain[\"Embarked\"]), \\\n",
    "              \"Age\": np.array(xtrain[\"Age\"]), \\\n",
    "              \"SibSp\": np.array(xtrain[\"SibSp\"]), \\\n",
    "              \"Parch\": np.array(xtrain[\"Parch\"]), \\\n",
    "              \"Fare\": np.array(xtrain[\"Fare\"])}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [],
   "source": [
    "xtest_data = {\"Pclass\": np.array(xtest[\"Pclass\"]), \\\n",
    "              \"Sex\": np.array(xtest[\"Sex\"]), \\\n",
    "              \"Cabin\": np.array(xtest[\"Cabin\"]), \\\n",
    "              \"Embarked\": np.array(xtest[\"Embarked\"]), \\\n",
    "              \"Age\": np.array(xtest[\"Age\"]), \\\n",
    "              \"SibSp\": np.array(xtest[\"SibSp\"]), \\\n",
    "              \"Parch\": np.array(xtest[\"Parch\"]), \\\n",
    "              \"Fare\": np.array(xtest[\"Fare\"])}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [],
   "source": [
    "import tensorflow as tf\n",
    "from tensorflow.keras import backend as K\n",
    "from tensorflow.keras.layers import Input, Embedding, \\\n",
    "    Dot, Flatten, Concatenate, Dense, Layer\n",
    "\n",
    "from tensorflow.keras.models import Model\n",
    "from tensorflow.keras.initializers import Zeros, glorot_normal\n",
    "from tensorflow.keras.optimizers import Adam\n",
    "from tensorflow.keras.regularizers import l2\n",
    "from tensorflow.keras.utils import plot_model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [],
   "source": [
    "def input_embedding_layer(\n",
    "    shape=1, \\\n",
    "    name=None, \\\n",
    "    vocabulary_size=1, \\\n",
    "    embedding_dim=1):\n",
    "    \n",
    "    input_layer = Input(shape=[shape, ], name=name)\n",
    "    embedding_layer = Embedding(vocabulary_size, embedding_dim)(input_layer)\n",
    "    \n",
    "    return input_layer, embedding_layer"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [],
   "source": [
    "class Linear(Layer):\n",
    "\n",
    "    def __init__(self, l2_reg=0.0, mode=2, use_bias=True, **kwargs):\n",
    "\n",
    "        self.l2_reg = l2_reg\n",
    "        if mode not in [0, 1, 2]:\n",
    "            raise ValueError(\"mode must be 0, 1 or 2\")\n",
    "        self.mode = mode\n",
    "        self.use_bias = use_bias\n",
    "        super(Linear, self).__init__(**kwargs)\n",
    "\n",
    "    def build(self, input_shape):\n",
    "        if self.use_bias:\n",
    "            self.bias = self.add_weight(name='linear_bias',\n",
    "                                        shape=(1,),\n",
    "                                        initializer=tf.keras.initializers.Zeros(),\n",
    "                                        trainable=True)\n",
    "            \n",
    "        if self.mode == 1:\n",
    "            self.kernel = self.add_weight(\n",
    "                'linear_kernel',\n",
    "                shape=[int(input_shape[-1]), 1],\n",
    "                initializer=tf.keras.initializers.glorot_normal(),\n",
    "                regularizer=tf.keras.regularizers.l2(self.l2_reg),\n",
    "                trainable=True)\n",
    "            \n",
    "        elif self.mode == 2 :\n",
    "            self.kernel = self.add_weight(\n",
    "                'linear_kernel',\n",
    "                shape=[int(input_shape[1][-1]), 1],\n",
    "                initializer=tf.keras.initializers.glorot_normal(),\n",
    "                regularizer=tf.keras.regularizers.l2(self.l2_reg),\n",
    "                trainable=True)\n",
    "\n",
    "        super(Linear, self).build(input_shape)\n",
    "\n",
    "    def call(self, inputs, **kwargs):\n",
    "        if self.mode == 0:\n",
    "            sparse_input = inputs\n",
    "            linear_logit = reduce_sum(sparse_input, axis=-1, keepdims=True)\n",
    "        elif self.mode == 1:\n",
    "            dense_input = inputs\n",
    "            fc = tf.tensordot(dense_input, self.kernel, axes=(-1, 0))\n",
    "            linear_logit = fc\n",
    "        else:\n",
    "            sparse_input, dense_input = inputs\n",
    "            fc = tf.tensordot(dense_input, self.kernel, axes=(-1, 0))\n",
    "            linear_logit = tf.reduce_sum(sparse_input, axis=-1, keepdims=False) + fc\n",
    "        if self.use_bias:\n",
    "            linear_logit += self.bias\n",
    "\n",
    "        return linear_logit\n",
    "\n",
    "    def compute_output_shape(self, input_shape):\n",
    "        return (None, 1)\n",
    "\n",
    "    def compute_mask(self, inputs, mask):\n",
    "        return None\n",
    "\n",
    "    def get_config(self, ):\n",
    "        config = {'mode': self.mode, 'l2_reg': self.l2_reg,'use_bias':self.use_bias}\n",
    "        base_config = super(Linear, self).get_config()\n",
    "        return dict(list(base_config.items()) + list(config.items()))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [],
   "source": [
    "class BiInteractionPooling(Layer):\n",
    "    \"\"\"Bi-Interaction Layer used in Neural FM,compress the\n",
    "     pairwise element-wise product of features into one single vector.\n",
    "\n",
    "      Input shape\n",
    "        - A 3D tensor with shape:``(batch_size,field_size,embedding_size)``.\n",
    "\n",
    "      Output shape\n",
    "        - 3D tensor with shape: ``(batch_size,1,embedding_size)``.\n",
    "\n",
    "      References\n",
    "        - [He X, Chua T S. Neural factorization machines for sparse predictive analytics[C]//Proceedings of the 40th International ACM SIGIR conference on Research and Development in Information Retrieval. ACM, 2017: 355-364.](http://arxiv.org/abs/1708.05027)\n",
    "    \"\"\"\n",
    "\n",
    "    def __init__(self, **kwargs):\n",
    "        super(BiInteractionPooling, self).__init__(**kwargs)\n",
    "\n",
    "    def build(self, input_shape):\n",
    "        if len(input_shape) != 3:\n",
    "            raise ValueError(\n",
    "                \"Unexpected inputs dimensions %d, expect to be 3 dimensions\" % (len(input_shape)))\n",
    "\n",
    "        super(BiInteractionPooling, self).build(input_shape)\n",
    "\n",
    "    def call(self, inputs, **kwargs):\n",
    "        if K.ndim(inputs) != 3:\n",
    "            raise ValueError(\n",
    "                \"Unexpected inputs dimensions %d, expect to be 3 dimensions\" % (K.ndim(inputs)))\n",
    "\n",
    "        concated_embeds_value = inputs\n",
    "        square_of_sum = tf.square(tf.reduce_sum(concated_embeds_value, axis=1, keepdims=True))\n",
    "        sum_of_square = tf.reduce_sum(concated_embeds_value * concated_embeds_value, axis=1, keepdims=True)\n",
    "        cross_term = 0.5 * (square_of_sum - sum_of_square)\n",
    "\n",
    "        return cross_term\n",
    "\n",
    "    def compute_output_shape(self, input_shape):\n",
    "        return (None, 1, input_shape[-1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [],
   "source": [
    "class DNN(Layer):\n",
    "    \"\"\"The Multi Layer Percetron\n",
    "\n",
    "      Input shape\n",
    "        - nD tensor with shape: ``(batch_size, ..., input_dim)``. The most common situation would be a 2D input with shape ``(batch_size, input_dim)``.\n",
    "\n",
    "      Output shape\n",
    "        - nD tensor with shape: ``(batch_size, ..., hidden_size[-1])``. For instance, for a 2D input with shape ``(batch_size, input_dim)``, the output would have shape ``(batch_size, hidden_size[-1])``.\n",
    "\n",
    "      Arguments\n",
    "        - **hidden_units**:list of positive integer, the layer number and units in each layer.\n",
    "\n",
    "        - **activation**: Activation function to use.\n",
    "\n",
    "        - **l2_reg**: float between 0 and 1. L2 regularizer strength applied to the kernel weights matrix.\n",
    "\n",
    "        - **dropout_rate**: float in [0,1). Fraction of the units to dropout.\n",
    "\n",
    "        - **use_bn**: bool. Whether use BatchNormalization before activation or not.\n",
    "\n",
    "        - **seed**: A Python integer to use as random seed.\n",
    "    \"\"\"\n",
    "\n",
    "    def __init__(self, hidden_units, activation='relu', l2_reg=0, dropout_rate=0, use_bn=False, seed=1024, **kwargs):\n",
    "        self.hidden_units = hidden_units\n",
    "        self.activation = activation\n",
    "        self.dropout_rate = dropout_rate\n",
    "        self.seed = seed\n",
    "        self.l2_reg = l2_reg\n",
    "        self.use_bn = use_bn\n",
    "        super(DNN, self).__init__(**kwargs)\n",
    "\n",
    "    def build(self, input_shape):\n",
    "        # if len(self.hidden_units) == 0:\n",
    "        #     raise ValueError(\"hidden_units is empty\")\n",
    "        input_size = input_shape[-1]\n",
    "        hidden_units = [int(input_size)] + list(self.hidden_units)\n",
    "        self.kernels = [self.add_weight(name='kernel' + str(i),\n",
    "                                        shape=(hidden_units[i], hidden_units[i + 1]),\n",
    "                                        initializer=glorot_normal(seed=self.seed),\n",
    "                                        regularizer=l2(self.l2_reg),\n",
    "                                        trainable=True) for i in range(len(self.hidden_units))]\n",
    "        self.bias = [self.add_weight(name='bias' + str(i),\n",
    "                                     shape=(self.hidden_units[i],),\n",
    "                                     initializer=Zeros(),\n",
    "                                     trainable=True) for i in range(len(self.hidden_units))]\n",
    "        if self.use_bn:\n",
    "            self.bn_layers = [tf.keras.layers.BatchNormalization() for _ in range(len(self.hidden_units))]\n",
    "\n",
    "        self.dropout_layers = [tf.keras.layers.Dropout(self.dropout_rate, seed=self.seed + i) for i in\n",
    "                               range(len(self.hidden_units))]\n",
    "\n",
    "        self.activation_layers = [tf.keras.layers.Activation(self.activation) \\\n",
    "                                  for _ in range(len(self.hidden_units))]\n",
    "        \n",
    "        super(DNN, self).build(input_shape)\n",
    "\n",
    "    def call(self, inputs, training=None, **kwargs):\n",
    "\n",
    "        deep_input = inputs\n",
    "\n",
    "        for i in range(len(self.hidden_units)):\n",
    "            fc = tf.nn.bias_add(tf.tensordot(\n",
    "                deep_input, self.kernels[i], axes=(-1, 0)), self.bias[i])\n",
    "            # fc = Dense(self.hidden_size[i], activation=None, \\\n",
    "            #           kernel_initializer=glorot_normal(seed=self.seed), \\\n",
    "            #           kernel_regularizer=l2(self.l2_reg))(deep_input)\n",
    "            if self.use_bn:\n",
    "                fc = self.bn_layers[i](fc, training=training)\n",
    "\n",
    "            fc = self.activation_layers[i](fc)\n",
    "            fc = self.dropout_layers[i](fc, training=training)\n",
    "            \n",
    "            deep_input = fc\n",
    "\n",
    "        return deep_input\n",
    "\n",
    "    def compute_output_shape(self, input_shape):\n",
    "        if len(self.hidden_units) > 0:\n",
    "            shape = input_shape[:-1] + (self.hidden_units[-1],)\n",
    "        else:\n",
    "            shape = input_shape\n",
    "\n",
    "        return tuple(shape)\n",
    "\n",
    "    def get_config(self, ):\n",
    "        config = {'activation': self.activation, 'hidden_units': self.hidden_units,\n",
    "                  'l2_reg': self.l2_reg, 'use_bn': self.use_bn, 'dropout_rate': self.dropout_rate, 'seed': self.seed}\n",
    "        base_config = super(DNN, self).get_config()\n",
    "        \n",
    "        return dict(list(base_config.items()) + list(config.items()))\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [],
   "source": [
    "class PredictionLayer(Layer):\n",
    "    \"\"\"\n",
    "      Arguments\n",
    "         - **task**: str, ``\"binary\"`` for  binary logloss or  ``\"regression\"`` for regression loss\n",
    "\n",
    "         - **use_bias**: bool.Whether add bias term or not.\n",
    "    \"\"\"\n",
    "\n",
    "    def __init__(self, task='binary', use_bias=True, **kwargs):\n",
    "        if task not in [\"binary\", \"multiclass\", \"regression\"]:\n",
    "            raise ValueError(\"task must be binary, multiclass or regression\")\n",
    "        self.task = task\n",
    "        self.use_bias = use_bias\n",
    "        super(PredictionLayer, self).__init__(**kwargs)\n",
    "\n",
    "    def build(self, input_shape):\n",
    "        if self.use_bias:\n",
    "            self.global_bias = self.add_weight(\n",
    "                shape=(1,), initializer=Zeros(), name=\"global_bias\")\n",
    "\n",
    "        super(PredictionLayer, self).build(input_shape)\n",
    "\n",
    "    def call(self, inputs, **kwargs):\n",
    "        x = inputs\n",
    "        if self.use_bias:\n",
    "            x = tf.nn.bias_add(x, self.global_bias, data_format='NHWC')\n",
    "        if self.task == \"binary\":\n",
    "            x = tf.sigmoid(x)\n",
    "\n",
    "        output = tf.reshape(x, (-1, 1))\n",
    "\n",
    "        return output\n",
    "\n",
    "    def compute_output_shape(self, input_shape):\n",
    "        return (None, 1)\n",
    "\n",
    "    def get_config(self, ):\n",
    "        config = {'task': self.task, 'use_bias': self.use_bias}\n",
    "        base_config = super(PredictionLayer, self).get_config()\n",
    "        return dict(list(base_config.items()) + list(config.items()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [],
   "source": [
    "def nfm(sparse_feature_list, \\\n",
    "        sparse_feature_reindex_dict, \\\n",
    "        dense_feature_list, \\\n",
    "        dnn_hidden_units=(128, 128), \\\n",
    "        l2_reg_embedding=1e-5, \\\n",
    "        l2_reg_linear=1e-5, \\\n",
    "        l2_reg_dnn=0, \\\n",
    "        init_std=0.0001, \\\n",
    "        seed=1024, \\\n",
    "        bi_dropout=0.2,\n",
    "        dnn_dropout=0.2, \\\n",
    "        dnn_activation='relu', \\\n",
    "        task='binary'):\n",
    "\n",
    "    sparse_input_layer_list = []\n",
    "    sparse_embedding_layer_list = []\n",
    "\n",
    "    dense_input_layer_list = []\n",
    "\n",
    "\n",
    "    # 1. Input & Embedding sparse features\n",
    "    for i in sparse_feature_list:\n",
    "        shape = 1\n",
    "        name = i\n",
    "        vocabulary_size = len(sparse_feature_reindex_dict[i]) + 1\n",
    "        embedding_dim = 64\n",
    "\n",
    "        cur_sparse_feaure_input_layer, cur_sparse_feaure_embedding_layer = \\\n",
    "            input_embedding_layer(\n",
    "                shape = shape, \\\n",
    "                name = name, \\\n",
    "                vocabulary_size = vocabulary_size, \\\n",
    "                embedding_dim = embedding_dim)\n",
    "\n",
    "        sparse_input_layer_list.append(cur_sparse_feaure_input_layer)\n",
    "        sparse_embedding_layer_list.append(cur_sparse_feaure_embedding_layer)\n",
    "\n",
    "\n",
    "    # 2. Input dense features\n",
    "    for j in dense_feature_list:\n",
    "        dense_input_layer_list.append(Input(shape=(1, ), name=j))\n",
    "    \n",
    "    \n",
    "    # === linear ===\n",
    "    sparse_linear_input = Concatenate(axis=-1)(sparse_embedding_layer_list)\n",
    "    dense_linear_input = Concatenate(axis=-1)(dense_input_layer_list)\n",
    "    linear_logit = Linear()([sparse_linear_input, dense_linear_input])\n",
    "\n",
    "    \n",
    "    # === nfm cross ===\n",
    "    nfm_input = Concatenate(axis=1)(sparse_embedding_layer_list)\n",
    "    bi_out = BiInteractionPooling()(nfm_input)\n",
    "    \n",
    "    if bi_dropout:\n",
    "        bi_out = tf.keras.layers.Dropout(bi_dropout)(bi_out, training=None)\n",
    "    \n",
    "    bi_out = Flatten()(bi_out)\n",
    "\n",
    "    \n",
    "    dnn_input = Concatenate(axis=-1)([bi_out, dense_linear_input])\n",
    "    dnn_output = DNN(dnn_hidden_units, dnn_activation, l2_reg_dnn, dnn_dropout, False, seed)(dnn_input)\n",
    "    dnn_logit = tf.keras.layers.Dense(1, use_bias=False, activation=None)(dnn_output)\n",
    "\n",
    "    \n",
    "    # === finally dense ===\n",
    "    out = PredictionLayer(task)(tf.keras.layers.add([linear_logit, dnn_logit]))\n",
    "    nfm_model = Model(inputs = sparse_input_layer_list + dense_input_layer_list, outputs=out)\n",
    "    \n",
    "    return nfm_model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [],
   "source": [
    "nfm_model = nfm(sparse_feature_list, \\\n",
    "              sparse_feature_reindex_dict, \\\n",
    "              dense_feature_list)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model: \"model_2\"\n",
      "__________________________________________________________________________________________________\n",
      "Layer (type)                    Output Shape         Param #     Connected to                     \n",
      "==================================================================================================\n",
      "Pclass (InputLayer)             [(None, 1)]          0                                            \n",
      "__________________________________________________________________________________________________\n",
      "Sex (InputLayer)                [(None, 1)]          0                                            \n",
      "__________________________________________________________________________________________________\n",
      "Cabin (InputLayer)              [(None, 1)]          0                                            \n",
      "__________________________________________________________________________________________________\n",
      "Embarked (InputLayer)           [(None, 1)]          0                                            \n",
      "__________________________________________________________________________________________________\n",
      "embedding_16 (Embedding)        (None, 1, 64)        256         Pclass[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "embedding_17 (Embedding)        (None, 1, 64)        192         Sex[0][0]                        \n",
      "__________________________________________________________________________________________________\n",
      "embedding_18 (Embedding)        (None, 1, 64)        9536        Cabin[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "embedding_19 (Embedding)        (None, 1, 64)        320         Embarked[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "concatenate_15 (Concatenate)    (None, 4, 64)        0           embedding_16[0][0]               \n",
      "                                                                 embedding_17[0][0]               \n",
      "                                                                 embedding_18[0][0]               \n",
      "                                                                 embedding_19[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "bi_interaction_pooling_3 (BiInt (None, 1, 64)        0           concatenate_15[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "Age (InputLayer)                [(None, 1)]          0                                            \n",
      "__________________________________________________________________________________________________\n",
      "SibSp (InputLayer)              [(None, 1)]          0                                            \n",
      "__________________________________________________________________________________________________\n",
      "Parch (InputLayer)              [(None, 1)]          0                                            \n",
      "__________________________________________________________________________________________________\n",
      "Fare (InputLayer)               [(None, 1)]          0                                            \n",
      "__________________________________________________________________________________________________\n",
      "dropout_2 (Dropout)             (None, 1, 64)        0           bi_interaction_pooling_3[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "concatenate_14 (Concatenate)    (None, 4)            0           Age[0][0]                        \n",
      "                                                                 SibSp[0][0]                      \n",
      "                                                                 Parch[0][0]                      \n",
      "                                                                 Fare[0][0]                       \n",
      "__________________________________________________________________________________________________\n",
      "flatten_2 (Flatten)             (None, 64)           0           dropout_2[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "concatenate_16 (Concatenate)    (None, 68)           0           flatten_2[0][0]                  \n",
      "                                                                 concatenate_14[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "concatenate_13 (Concatenate)    (None, 1, 256)       0           embedding_16[0][0]               \n",
      "                                                                 embedding_17[0][0]               \n",
      "                                                                 embedding_18[0][0]               \n",
      "                                                                 embedding_19[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "dnn_2 (DNN)                     (None, 128)          25344       concatenate_16[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "linear_4 (Linear)               (None, 1)            5           concatenate_13[0][0]             \n",
      "                                                                 concatenate_14[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "dense_2 (Dense)                 (None, 1)            128         dnn_2[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "add_2 (Add)                     (None, 1)            0           linear_4[0][0]                   \n",
      "                                                                 dense_2[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "prediction_layer_2 (PredictionL (None, 1)            1           add_2[0][0]                      \n",
      "==================================================================================================\n",
      "Total params: 35,782\n",
      "Trainable params: 35,782\n",
      "Non-trainable params: 0\n",
      "__________________________________________________________________________________________________\n",
      "None\n"
     ]
    }
   ],
   "source": [
    "print(nfm_model.summary())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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Jkir1Z45c+b8+fOP/9LqVI02bdoYWszM/vimPXXqVKdOnYp8C7/88stCCI1GU7iTxo0b5+bmqq///e9/29jYvPXWW926dVMH+8vopyLmz5/v6enp6+tbuNHc3Lyy71Sn0926datLly7G89YAoGYhiAMwQR4eHu3atZOyoHhSUpIQIjU1tfiu1NTUuLi47Ozswo0FBQVldzh06NBz587179//xx9/7N2798aNG6vWjyo8PNza2nrevHkVObhsEREReXl5np6ewjjeGgDUOARxACZIo9H4+fmFhITodLrHfGkXFxchxK5du0rclZ2d/eGHHxpaYmJi1KksZfjXv/7l7Oz8/fffh4aG6nS6wMDAqvUjhNi/f39iYuLs2bMNLVFRUeoLvV5f7umF5eXlzZkzx83NberUqcbw1gCgJuIHfQCYpuvXrzs7O2/btm3w4MHV1WdFfjjm/Pnzzz33XKNGjUJCQjw8PE6cOPHKK69kZGRcu3atefPmTz/9dFxcnL+/v6enZ0xMzMmTJ7/++msbG5u2bdvGx8cbvpBbtmyZlJSk0+ksLCysra2TkpKeeOKJ/Pz8pk2buri4HDlypLR+yijs4MGDQUFBr776qrqpKEpcXJy1tfWCBQt27drl6+sbFhY2YMCA4ifm5OTUr1+/TZs2165dU1vOnj07bdq0hISEXbt2PfXUU0KI3NxciW+NH/QBUFNV33RzADAunp6egwcPrsYOK/hQYGRkZK9evWxsbJydnRcvXuzh4TFx4sSDBw/q9fr4+PhBgwY1adLEwcFh/Pjxt2/fVhQlODhY/UJeuHBhenr6smXL1M133303JydHCPHMM88sXrx45MiRAwcOvHbtmqIoJfZThuPHj9evX7/I979Go7l69aqiKPv372/RokVERETxE3/44Yc33nhDPb5v3779+/cfNGjQ0KFDg4ODMzMzCx8p661V/L4AgLFhRByAydq8efOYMWMSEhIcHByqpUNGXo0T9wVADcUccQAma+jQoQ0aNAgNDZVdyGOiKV1sbKzs6gAARRHEAZisevXqDRs2bN26dbILeUzK+L+f6mLeAACjQhAHYMrGjBlz8eLFM2fOyC4EAICiCOIATFnPnj1dXFw2bNgguxAAAIoiiAMwceqC4oZfcwQAwEgQxAGYOD8/v/T09J07d8ouBACABxDEAZg4R0fHF154gdkp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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "plot_model(nfm_model, to_file='nfm_model.png')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train on 712 samples, validate on 179 samples\n",
      "Epoch 1/5\n",
      "712/712 [==============================] - 2s 2ms/sample - loss: 1.5540 - accuracy: 0.6756 - val_loss: 0.8308 - val_accuracy: 0.6425\n",
      "Epoch 2/5\n",
      "712/712 [==============================] - 0s 141us/sample - loss: 0.9063 - accuracy: 0.7374 - val_loss: 0.8240 - val_accuracy: 0.7207\n",
      "Epoch 3/5\n",
      "712/712 [==============================] - 0s 138us/sample - loss: 0.8161 - accuracy: 0.7612 - val_loss: 0.9330 - val_accuracy: 0.6983\n",
      "Epoch 4/5\n",
      "712/712 [==============================] - 0s 139us/sample - loss: 0.7586 - accuracy: 0.7640 - val_loss: 0.7087 - val_accuracy: 0.7263\n",
      "Epoch 5/5\n",
      "712/712 [==============================] - 0s 145us/sample - loss: 0.6637 - accuracy: 0.7992 - val_loss: 0.6887 - val_accuracy: 0.7542\n"
     ]
    }
   ],
   "source": [
    "nfm_model.compile(loss='binary_crossentropy', \\\n",
    "        optimizer=Adam(lr=1e-3), \\\n",
    "        metrics=['accuracy'])\n",
    "\n",
    "history = nfm_model.fit(xtrain_data, ytrain, epochs=5, batch_size=32, validation_data=(xtest_data, ytest))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "None\n"
     ]
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    " \n",
    "loss = history.history['loss']\n",
    "val_loss = history.history['val_loss']\n",
    "epochs = range(1, len(loss) + 1)\n",
    "plt.figure()\n",
    "plt.plot(epochs, loss, 'bo', label='Training loss')\n",
    "plt.plot(epochs, val_loss, 'b', label='Validation loss')\n",
    "plt.title('Training and validation loss')\n",
    "plt.legend()\n",
    "print(plt.show())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
